/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.siagefi.service;

import br.siagefi.dao.DAO;
import br.siagefi.model.Documento;
import br.siagefi.model.Funcionario;
import br.siagefi.model.Usuario;
import java.util.List;

/**
 *
 * @author NOTE
 */
public class FuncionarioService {

    private final DAO<Funcionario> dao;
    private final UsuarioService usuarioService;

    public FuncionarioService() {
        this.dao = new DAO<>(Funcionario.class);
        this.usuarioService = new UsuarioService();
    }

    public void inserir(Funcionario funcionario) {
        dao.adiciona(funcionario);
    }

    public void alterar(Funcionario funcionario) {
        dao.atualiza(funcionario);
    }

    public List<Funcionario> listar() {
        return dao.listaTodos();
    }

    public void remover(Funcionario funcionario) {
        dao.remove(funcionario);
    }

    public boolean jaExiste(Funcionario funcionario) {
        List<Funcionario> lista = this.listar();
        for (Funcionario c : lista) {
            if (c.equals(funcionario)) {
                return true;
            }
        }
        return false;
    }

    public Funcionario listarPorCPF(String cpf) {
        List<Funcionario> lista = dao.consultar("Funcionario.buscaPorCPF", cpf);
        if(! lista.isEmpty()){
            return lista.get(0);
        }else {
            return null;
        }
    }
    
    public Funcionario listarPorMatricula(String matricula) {
        List<Funcionario> lista = dao.consultar("Funcionario.buscaPorMatricula", matricula);
        if(! lista.isEmpty()){
            return lista.get(0);
        }else {
            return null;
        }
    }

    public boolean existeDocumentoVinculado(Funcionario funcionario) {
        return !(new DAO<>(Documento.class).consultar("Documento.buscaPorPessoa", funcionario).isEmpty());
    }

    public void incluirUsuario(Usuario usuario) {
        usuarioService.inserir(usuario);
    }

    public void alterarUsuario(Usuario usuario) {
        usuarioService.alterar(usuario);
    }
    
    public void excluirUsuario(Usuario usuario) {
        usuarioService.remover(usuario);
    }

    
}
